HDRP和URP无法平滑切换,因为属性、功能差异巨大。 本脚本仅对可对应的默认脚本和属性做了转换处理。细节调整还需自己搞。 自动转换可以节省手动更换shader、texture、通用属性的劳动成本。
操作步骤
使用前确保当前项目中存在HDRP和URP的包,没有请到packge manager中下载将下方代码保存至Editor文件夹中,没有自己创建。
using System;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
class HDRP2URPConverter : MonoBehaviour
{
// 更新文件夹
public static string root;
private static List m_textureResourceList;
private static List m_shaderPairs;
[MenuItem("转换管线/HDRP转URP")]
static void HdrpToUrp()
{
ManualValidate();
WalkthroughMaterials(root, ReplaceToUrp, GetURPShader);
}
[MenuItem("转换管线/URP转HDRP")]
static void UrpToHdrp()
{
ManualValidate();
WalkthroughMaterials(root, ReplaceToHDRP, GetHDRPShader);
}
private static string[] m_switchPropertiesList = new string[]
{
"_MainTex", "_BaseMap", "_BaseColorMap", "_BaseMap", "_NormalMap", "_BumpMap", "_AlphaCutoffEnabled", "_AlphaClip"
};
private static string[] m_shaderNameList = new[]
{
"HDRP/Lit", "Universal Render Pipeline/Lit", "HDRP/Unlit", "Universal Render Pipeline/Unlit"
};
[ContextMenu("初始化工具")]
private static void ManualValidate()
{
// 更换texture
m_textureResourceList = new List();
for (int i = 0; i HDRP转URP,然后等待处理结束即可 处理好的模型都变粉嫩了。因为你当前是URP/HDRP管线,与转换后的材质不通。切换管线后就能正常看了。
|